package com.gupao.singleton;

/**
 * 测试静态内部类和外部类的加载顺序
 *
 */
public class TestLoadInnerClass {
    static{
        System.out.println("外部类加载成功");
    }
    static void staticOutClassMethod(){
        System.out.println("执行外部类的静态方法");
    }


    public static void main(String[] args) {
        TestLoadInnerClass testLoadInnerClass = new TestLoadInnerClass();
        System.out.println("外部类实例化完成");
        testLoadInnerClass.staticOutClassMethod();
        System.out.println("外部类的静态方法执行完毕");
        TestLoadInnerClass.InnerClass.staticInnerClassMethod();
        System.out.println("内部类的静态方法执行完毕");
    }
    static class InnerClass{
        static{
            System.out.println("内部类加载成功");
        }
        static void staticInnerClassMethod(){
            System.out.println("执行内部类的静态方法");
        }
    }

    /**
     * 执行结果:
     *       外部类加载成功
     *       外部类实例化完成
     *       执行外部类的静态方法
     *       外部类的静态方法执行完毕
     *       内部类加载成功
     *       执行内部类的静态方法
     *       内部类的静态方法执行完毕
     */
}
